package com.hejing.my_utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class MyUtils {

    /**
     * 根据传入的value, 保留digit位数字
     * @param value
     * @param digit
     */
    public static double keepSomeDecimalForNum(double value, int digit) {
        String format = String.format("%%.%df", digit);  // 效果: %.digit f
        String strValue = String.format(format, value);
        return Double.parseDouble(strValue);
    }

    /**
     * 传入一个时间模式(如 yyyy-MM-dd HH:mm:ss)，将当前时间转换为String模式并输出。
     * @param pattern
     * @return
     */
    public static String nowDate2String(String pattern) {
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        Date date = new Date();
        String str = sdf.format(date);
        return str;
    }

    /**
     * 将一定格式的表示时间的字符串转化为Date格式
     * 注意，此处的pattern 和 dateValue的格式一定要相匹配，否则会报错。例如：
     * 如果 pattern为: yyyy-MM-dd HH:mm:ss， 则dateValue就不能是"20231021 10:32:11"
     * 的格式。
     * @param pattern
     * @param dateValue
     * @return
     * @throws ParseException
     */
    public static Date string2Date(String pattern, String dateValue) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        Date date = sdf.parse(dateValue);
        return date;
    }

    /**
     * 将传入的Date类型数据转换为Calendar类型的数据
     * @param date
     * @return
     */
    public static Calendar date2Calendar(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar;
    }

    /**
     * 将传入的Calendar类型的数据转换为Date类型的数据。
     * @param calendar
     * @return
     */
    public static Date calendar2Date(Calendar calendar) {
        Date date = calendar.getTime();
        return date;
    }

    /**
     * 传入一个日期，判断这个日期是星期几
     *      1~7: 表示星期一~星期日
     * @param date
     * @return
     */
    public static int getDayOfWeek(Date date) {
        Calendar calendar = date2Calendar(date);
        // 注意: Calendar.DAY_OF_WEEK表示一周中第几天:
        // 周日: 1，...，周六: 7
        int dayOfWeekId = calendar.get(Calendar.DAY_OF_WEEK) - 1;
        dayOfWeekId = dayOfWeekId == 0 ? 7: dayOfWeekId;
        return dayOfWeekId;
    }
}



















